#include <string>
#include <vector>
#include <ostream>
#include <boost/shared_ptr.hpp>

#include <blast_results.h>

class t_blast_options
{
//	friend void do_bl2seq (const t_blast_options& blast_options, 
//						   const string& seq1, const string& seq2,
//						   t_align_results& results);
	struct t_impl;
	boost::shared_ptr<t_impl>	p_impl;
	bool						DNA;
public:
	bool				is_dna () const {return DNA;}
	friend bool do_bl2seq (t_blast_options& options,
						const std::string& seq1,
						const std::string& seq2,
						bcpp_align::t_align_results& results);
	t_blast_options(    bool seg_filter = false,
						double e_value_cutoff = 1e-5,
						const std::string& matrix = std::string("BLOSUM62"),
						//double theoretical_db_size =  1196146007,
						double theoretical_db_size =  11961460,
						unsigned gap_x_dropoff = 50,
						unsigned wordsize = 0,
						unsigned gap_open = 0,//11,
						unsigned gap_extend = 0);//1);
													   //505289011);
};

bool do_bl2seq (		t_blast_options& options,
						const std::string& seq1,
						const std::string& seq2,
						bcpp_align::t_align_results& results);
						


